The present invention relates to methods of transmitting program data files, or “streaming data”, such as video or audio files, to multiple users at arbitrary delivery times within a delivery period and as selected by the users. In particular, the present invention provides a method of reducing the bandwidth or other costs associated with transmitting such data at different delivery times to multiple users.
Program data files, or “streaming data,” is data that a user will process sequentially as it is received during a transmission. Examples of streaming data are video and audio programs, including movies, television shows, news clips, product advertisements, medical or recreational information, or education programs. This list of examples is not exhaustive. As implied by the examples, though, there is an application “playback rate” that imposes timeliness constraints on the delivery of data so that the application can make continuous progress through the data once it has reached a critical point (e.g., the display of a frame) on some initial segment of it. It should be recognized that the term “video program” as used below is meant to be inclusive of a variety of circumstances, including, for example, an independent entity such as a movie or television show, a piece of a more complex multimedia presentation, or a single layer of a program that has been encoded using base and enhancement layers.
“On-demand delivery” of streaming data is the delivery of streaming data beginning at a delivery time occurring substantially at the time of a user request for the data. For example in a video on-demand (VOD) system, a customer might be able to view a video program beginning at any time.
In order to reduce the costs of storage and distribution, “programs” of streaming data may be stored at and transmitted from a central server (which may consist of one or more machines) to a large number of users or clients via phone lines, cable, broadcast radio, satellite links or other media. For a popular program, many new requests will arrive at the central server during a delivery period.
On-demand delivery may be provided by making a separate transmission of data to each client when the client request arrives. This approach is simple and works with standard receiving device but has the disadvantage of requiring a large number of transmission channels, one for each new client. The transmission capacity of the server and the intervening communications medium (phone lines, cable, etc.) is termed “bandwidth” referring generally to the amount of data that can be transmitted in a given time interval. For this simple scheme of providing on-demand delivery of streaming data, the server bandwidth required to serve the clients increases linearly with the number of clients and thus does not scale well to large numbers of clients.